package com.seed.application.service;

import com.mybatisflex.core.row.Row;
import com.seed.core.pojo.GetVO;
import com.seed.core.pojo.SetDTO;
import com.seed.core.pojo.StatPage;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface SeedService {

    /**
     * 带统计的分页列表
     * @param pageNumber 当前页
     * @param pageSize 每页大小
     * @return 带统计的分页对象
     */
    StatPage<Row> page(Integer pageNumber, Integer pageSize);

    /**
     * 保存单条数据
     * @param row 数据
     * @return true
     */
    boolean save(Row row);

    /**
     * 保存多条数据
     * @param rows 多条数据
     * @return true
     */
    boolean saveBatch(List<Row> rows);

    /**
     * 更新单条数据
     * @param row 数据
     * @return true
     */
    boolean update(Row row);

    /**
     * 更新多条数据
     * @param rows 多条数据
     * @return true
     */
    boolean updateBatch(List<Row> rows);

    /**
     * 获取详情数据
     * @param id 主键值
     * @return 详情数据对象
     */
    Row detail(Serializable id);

    /**
     * 删除单条数据
     * @param id 主键值
     * @return true
     */
    boolean remove(Serializable id);

    /**
     * 删除多条数据
     * @param ids 多个主键值
     * @return true
     */
    boolean removeBatch(List<Serializable> ids);

    /**
     * 获取数据的单个属性值
     * @param id 数据主键值
     * @return 属性值
     */
    GetVO get(Serializable id);

    /**
     * 设置数据的单个属性值
     * @param dto 属性值对象包装
     * @return true
     */
    boolean set(SetDTO dto);

    /**
     * 获取统计数据
     * @return 统计数据对象
     */
    Map<String, Object> stat();
}
